package com.andaily.service;

import com.andaily.domain.dto.thing.*;
import com.andaily.domain.thing.ThingStatus;

/**
 * @author Shengzhao Li
 */
public interface ThingService {

    EventDto loadEventDto(String guid);

    void persistEventDto(EventDto eventDto);

    ThingDto loadThingDto(String guid);

    void persistThingDto(ThingDto thingDto);

    int loadTotalThing();

    EventOverviewDto loadEventOverviewDto(EventOverviewDto overviewDto);

    ThingAmountDto loadThingAmountDto();

    void deleteEvent(String guid);

    ThingMonitoringDto loadThingMonitoringDto(ThingMonitoringDto thingMonitoringDto);

    ThingDto loadExistThingDto(String guid);

    boolean hasHighThings();

    void changeThingStatus(String guid, ThingStatus status);

    ThingHistoryDto loadThingHistoryDto(ThingHistoryDto thingHistoryDto);

    ThingWarningDto loadThingWarningDto(ThingWarningDto thingWarningDto);

    ThingArchiveDto loadThingArchiveDto(ThingArchiveDto thingArchiveDto);

    boolean archiveThings(String[] guids);

    ThingSearchDto loadSearchResult(ThingSearchDto thingSearchDto);

    ThingSettingDto loadThingSettingDto();

    void updateThingSettingDto(ThingSettingDto thingSettingDto);

    ThingStatisticsDto loadStatusStatisticsDto();

    ThingStatisticsDto loadPriorityStatisticsDto();
}
